]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: Close when a system modal pops up
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 6 Dec 2019 17:07:35 +0000 (18:07 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 6 Dec 2019 19:26:01 +0000 (20:26 +0100)
Just like switcher popups, popup menus don't play well together with
system modals, and generally have a lower priority. So just like
switcher popups, close popup menus when a system modal dialog pops
up.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1536

js/ui/popupMenu.js

index 53a1cd17042e4feaf9cfcbe983f098124639ec5a..c3e763b36955614d9c7f83ba516aab1e25b9e429 100644 (file)
@@ -817,6 +817,7 @@ var PopupMenu = class extends PopupMenuBase {
                                                         this._onKeyPress.bind(this));
         }
 
+        this._systemModalOpenedId = 0;
         this._openedSubMenu = null;
     }
 
@@ -891,6 +892,11 @@ var PopupMenu = class extends PopupMenuBase {
         if (this.isEmpty())
             return;
 
+        if (!this._systemModalOpenedId) {
+            this._systemModalOpenedId =
+                Main.layoutManager.connect('system-modal-opened', () => this.close());
+        }
+
         this.isOpen = true;
 
         this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment);
@@ -921,6 +927,11 @@ var PopupMenu = class extends PopupMenuBase {
     destroy() {
         if (this._keyPressId)
             this.sourceActor.disconnect(this._keyPressId);
+
+        if (this._systemModalOpenedId)
+            Main.layoutManager.disconnect(this._systemModalOpenedId);
+        this._systemModalOpenedId = 0;
+
         super.destroy();
     }
 };